package org.cg.entidade.estado;

import org.apache.log4j.Logger;
import org.cg.gestor.Gestores;
import org.cg.entidade.Coelho;
import org.cg.entidade.Entidade;

public class EstadoCoelhoComFome implements IEstado {
	
	private static Logger logger = Logger.getLogger(EstadoCoelhoComFome.class);

	public void update(Entidade entidade) {
		Coelho coelho = (Coelho)entidade;
		
		logger.info(" --- INICIO de update EstadoCoelhoComFome --- ");
		logger.info("Tem " + coelho.getEnergia());
		logger.info("Esta na " + coelho.getPosicao());
		
		if (!coelho.getEnergia().estaVivo()) {									//nao esta vivo
			logger.info("Vai passar a EstadoMorte.");
			coelho.mudarEstado(new EstadoMorte());								//coitadinho ja morreu :(
			
		} else if (coelho.getEnergia().ultrapassouLimite()) {					//esta vivo e perdeu a fome
			logger.info("Vai passar a EstadoCoelho.");
			coelho.mudarEstado(new EstadoCoelho());								//muda para coelho normal
				
		} else if (Gestores.getGestorColisao().temCenouraParaComer(coelho)) {	//esta vivo e tem fome e tem cenoura para comer
			coelho.getEnergia().incrementar();									//incrementa a sua energia
			logger.info("Vai incrementar energia.");
				
		} else {																//nao tem cenoura para comer
			Gestores.getGestorColisao().setDireccoesValidas(coelho);			//validar colisoes com outras entidades
			Gestores.getGestorMovimento().moverCoelho(coelho);					//mover o coelho
			coelho.getEnergia().decrementar();									//decrementar energia
			logger.info("Vai deslocar-se e decrementar energia.");
		}
		
		logger.info("Ficou na " + coelho.getPosicao());
		logger.info("Ficou com " + coelho.getEnergia());
		logger.info(" --- FIM de update EstadoCoelhoComFome --- ");
	}

}
